<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>对象的扩展及新增方法</title>
</head>

<body>
    <div>

    </div>

    <script>
        //     console.log(NaN ===NaN)
        //     console.log(+0===-0)
        //     // Object.is()
        console.log(Object.is(NaN, NaN), Object.is(+0, -0))

        //       // Object.assign()

        console.log(Object.assign(2))
        let obj1 = { a: { b: 1 } }
        let obj2 = Object.assign({}, obj1)
        console.log(obj1.a.b)
        console.log(obj2.a.b)
        obj1.a.b = 3
        console.log(obj2.a.b)


        //       const source ={
        //           get foo(){
        //               return 1
        //           }
        //       }
        //       let a = Object.assign({},source)
        //       console.log(a)

        //     // promise

        //     //es5
        //     setTimeout(function(){
        //         console.log('h1')
        //         setTimeout(function(){
        //             console.log('h2')
        //         },1000)
        //     },1000)

        //     // 使用promise
        //     var waitSecond = new Promise(function(resolve,reject){
        //         setTimeout(resolve,1000)

        //     })
        //     waitSecond
        //     .then(function(res){
        //         console.log('wh1')
        //         return waitSecond;
        //     })
        //     .then(function(sdd){
        //         console.log('wh2')
        //     })


        // async await  
        function login(userName) {
            return new Promise((resolve, reject) => {
                setTimeout(() => {
                    resolve('1001')
                }, 600);
            })
        }
        function getData(userId) {
            return new Promise((resolve, reject) => {
                setTimeout(() => {
                    if (userId === '1001') {
                        resolve('Success')
                    } else {
                        reject('Fail')
                    }
                }, 600)
            })
        }

        // 对象属性的属性描述
        let objK = {
            foo: "123"
        }
        console.log(Object.getOwnPropertyDescriptor(objK, 'foo'))

        var jspang = Symbol();
        // var obj = {
        //     [jspang]: '技术胖'
        // }
        // console.log(obj[jspang]);
        // obj[jspang] = 'web';
        // console.log(obj[jspang]);

        let obj = { name: 'jspang', skill: 'web' };
        let age = Symbol(),hobby=Symbol();
        obj[hobby] = 'eat';
        obj[age] = 18;
        for (let item in obj) {
            console.log(obj[item]);  //jspang web  用 in  方法循环对象 不会遍历属性名类型为 Symbol的变量
        }
        console.log(obj);
    </script>
</body>

</html>